package HuaWeiOd.AA;

import java.util.Scanner;

/**
 * 题目： 对于任意两个正整数 A 和 B ，定义它们之间的差异值和相似值：
 * 差异值：A、B 转换成二进制后，对于二进制的每一位，对应位置的bit值不相同则为1，否则为0;
 * 相似值：A、B 转换成二进制后，对于二进制的每一位，对应位置的bit值都为1则为1，否则为0;
 * 现在有 n 个正整数 $A_0$ 到 $A_{n−1}$，问有多少对 (i,j)(0≤i<j<n)，$A_i$ 和 $A_j$ 的差异值大于相似值。
 * 假设 A=5,B=3；
 * 则 A 的二进制表示 101；B 的二进制表示 011；
 * 则 A 与 B 的差异值二进制为 110；相似值二进制为 001； A 与 B 的差异值十进制等于 6，相似值十进制等于 1，满足条件。
 *
 * 输入
 * 输入：一个 n 接下来 n 个正整数
 * 数据范围： 1 <= n <= 10^5, 1 <= A[i] < 2^30
 *
 * 输出
 * 输出：满足差异值大于相似值的对数
 *
 * 思路
 * 差异值即为 按位异或 运算的结果；
 * 相似值即为 按位与 运算的结果；
 * 遍历运算并比较即可。
 * @author caihe
 * @date 2023/4/12 10:12
 */
public class 二进制差异数 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        int count = 0;
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                int a = arr[i];
                int b = arr[j];
                // 差异值 异或
                // 相似值 并
                int aa = a ^ b;
                int bb = a & b;
                if (aa > bb) {
                    count++;
                }
            }
        }
        System.out.println(count);
    }
}
